容器和構建文件配置
創建用戶
確保已為您的容器創建了一個用戶,并以該用戶身份運行該容器(請勿以root用戶身份運行容器)。
遠程訪問
不允許遠程訪問守護程序,并且如果絕對必須這樣做,請使用證書保護該訪問。
隔離用戶名稱空間
確保用戶名稱空間在Docker中是隔離的,因為它是默認與主機名稱空間共享的,這一點尤其重要。在某些情況下,這可能會被濫用以獲取特權升級,甚至逃脫容器。您可以通過編輯配置文件來隔離用戶名稱空間,如上一節“ Docker配置文件”所述。此處多余地提及這一點,以強調這樣做的重要性。
Healthchecks
Healthcheck是一個功能強大的工具,可用于驗證容器的完整性,并可在dockerfile中進行配置。您應該執行運行狀況檢查以確保容器正常運行。如果服務器啟動,下面的示例運行狀況檢查將以0退出,如果服務器關閉則以1退出。
HEALTHCHECK CMD curl –fail http://localhost || exit 1
SELinux
如果您的主機操作系統支持SELinux,請創建或導入SELinux策略,并在啟用SELinux的守護程序模式下啟動Docker。
docker daemon –selinux-enable
然后,您可以使用安全選項啟動Docker容器,如下所示:
docker run –interactive –tty –security-opt label=level:TopSecret centos /bin/bash
網絡接口
默認情況下,Docker偵聽每個網絡接口。由于在大多數情況下,僅在一個接口上會產生流量,因此會過度增加攻擊面。因此,啟動
Docker容器時,您可以將容器端口綁定到主機上的特定接口,如下所示
docker運行–detach –publish 10.2.3.4:49153:80 nginx
緩存的映像版本
提取映像時,請確保本地緩存與存儲庫中的內容匹配。否則,您最終可能會提取包含漏洞的映像的過時緩存版本。
網絡橋
默認網絡模型docker0容易受到ARP欺騙和MAC泛洪攻擊。為了解決這個問題,請按照您的說明創建用戶定義的橋接網絡,如下所示:https : //docs.docker.com/network/bridge/ 6
Docker套接字警告
切勿在容器內運行Docker套接字。這樣做可以使該容器執行Docker命令,并因此與主機OS通信并對其進行控制。所以不要那樣做。
企業配置
Docker Trust
使用Docker Trust工具來生成可用于驗證圖像的加密完整性的密鑰。可以使用Docker信任密鑰對帶有私鑰的Docker映像進行簽名,可以使用公證服務器上的公鑰來對其進行驗證。有關更多信息,請訪問https://docs.docker.com/engine/security/trust/content_trust/ 2。要專注于在企業引擎中啟用Docker Trust,請跳至本節https://docs.docker.com/engine/security/trust/content_trust/#enabling-dct-within-the-docker-enterprise-engine
漏洞掃描
Docker Enterprise具有內置的漏洞掃描功能,其中包括下載CVE數據庫以對Docker映像運行脫機漏洞掃描的選項。定期掃描圖像會提醒您它們所存在的漏洞,從而有助于使其更加安全。在此處了解有關如何執行此操作的更多信息:https : //docs.docker.com/ee/dtr/user/manage-images/scan-images-for-vulnerabilities/ 19
UCP
與LDAP的集成通用控制平面可以與LDAP集成,以簡化身份驗證系統,避免不必要的冗余。在此處閱讀有關此過程的更多信息:
回答所涉及的環境:聯想天逸510S、Windows 10。
Docker簡介
Docker是一個Docker容器通過其輕量級的運行時環境共享底層操作系統,以托管支持DevOps環境的應用程序。作為Cloud-Native框架的關鍵元素,Docker為您的軟件開發生命周期(SDLC)帶來了許多好處。但是,這些好處并非沒有風險。您可能會面臨復雜性,特別是在保護Docker框架方面。非常成功的Linux開源項目。它在Linux操作系統下無需增加管理器即可虛擬化應用程序。該應用程序常被抽象地誤認為是操作系統(具有Linux內核資源隔離功能的OS)的唯一的應用程序。換句話說,該Linux應用程序部署在Docker數據容器中,該容器能利用Linux OS 的所有功能并能隔離應用程序。
Docker容器具有移動性并且與虛擬機(VMs)相互隔離,且僅在虛擬機上進行部分操作。在深入研究Docker數據保護這個問題之前,弄清楚Docker鏡像和Docker數據容器之間的差異是十分必要的。一個Docker鏡像是包括一個或多個應用程序的操作系統。而Docker 容器(本文的重點)是獨立于鏡像之外的運行實例。
Docker數據容器保護機制目前十分簡單,不像虛擬機數據保護機制那么復雜成熟。這種保護機制與VMware vSphere存儲接口數據保護、Microsoft Hyper-V 卷影復制服務或內核VM快照API不同。這就使得Docker容器保護機制更具有挑戰性。好消息是我們有幾種方法來實現它。
保護 Docker 容器
1.保護Docker基礎架構
容器是可以托管應用程序的虛擬單元。為此,容器可容納:
由于容器是云原生設置的基礎,因此在整個容器生命周期中,保護它們免受潛在攻擊媒介的侵害是至關重要的。保護這種框架的整體方法不僅是保護Docker容器,而且還保護其基礎架構。
讓我們分解保護基礎設施安全的最佳方法,看看它是如何工作的。
定期更新您的Docker版本
首先,確保您的Docker版本是最新的。過時的版本容易受到安全攻擊。新版本發布通常包含修補程序和錯誤修復程序,以解決舊版本的漏洞。
主機環境也是如此:確保支持的應用程序是最新的,并且沒有已知的錯誤或安全漏洞。
保持容器清潔
擴展的容器環境擴大了攻擊面,并且相對于精益設置而言,更容易發生安全漏洞。為避免這種情況,請將您的容器配置為僅包含使它們按預期運行的必要組件:
此外,應定期檢查主機實例中是否有未使用的容器和基本映像,并丟棄那些未使用的容器和基本映像。
配置API和網絡
Docker Engine使用HTTP API在網絡上進行通信。配置不當的API帶有黑客可以利用的安全漏洞。
為避免這種情況,請通過安全地配置API來保護您的容器,該API限制了容器的公開展示。一種方法是通過啟用基于證書的身份驗證來實施加密通信。
(獲取有關保護Docker API的更多詳細信息**。)
限制系統資源的使用
設置每個容器可以使用的基礎結構資源比例的限制。這些基礎結構資源包括:
Docker使用控制組來限制不同進程之間的資源分配和分配。這種方法可以防止受損的容器消耗過多的資源,這些資源在發生安全漏洞時可能會中斷服務的交付。
保持主機隔離
在不同的主機上運行具有不同安全性要求的容器。
通過不同的命名空間維持容器的隔離性可以保護關鍵數據免受全面攻擊。這種方法還可以防止嘈雜的鄰居在基于池的隔離上消耗過多的資源,從而影響其他容器的服務。
限制容器功能
默認情況下,Docker容器可以維護和獲取運行其核心服務可能需要或不需要的其他特權。
最佳做法是,應將容器的權限限制為僅運行其應用程序所需的權限。為此,請使用以下命令刪除Docker容器的所有特權:
復制
然后,使用–cap-add標志向容器添加特定特權。這種方法限制了Docker容器獲取不必要的特權,這些特權在安全漏洞期間會被利用。
過濾系統調用
應用系統調用過濾器,使您可以選擇容器可以對Linux內核進行哪些調用。
這種方法啟用了安全的計算模式,從而減少了可能的暴露點,從而避免了安全事故的發生,尤其是避免了對內核漏洞的利用。
2.保護Docker鏡像
現在,讓我們轉向基礎架構之外的安全最佳實踐。Docker映像是用于創建容器和宿主應用程序的可執行代碼模板。Docker映像由運行時庫和根文件系統組成,從而使映像成為Docker容器最關鍵的基礎之一。在保護Docker映像時,以下是一些最佳實踐。
使用信任的鏡像
僅從最新的且配置正確的可信來源獲取Docker基本映像。
此外,通過啟用Docker內容信任功能以過濾掉不安全的可疑來源,確保Docker映像已正確簽名。
定期掃描鏡像
維護可靠的Docker映像安全配置文件并定期掃描它們是否存在漏洞至關重要。在下載圖像之前,除了進行初始掃描外,還請執行此操作,以確保可以安全使用。
使用常規圖像掃描,您還可以通過以下方法最大程度地減少曝光:
支持最小的基本鏡像
避免在較小的通用Docker鏡像上使用較大的通用Docker鏡像,以最大程度地減少安全漏洞。這提供了兩個有價值的結果:
3.訪問和身份驗證管理
Docker Security的最后一個類別涉及訪問和身份驗證。
通過訪問控制保護Docker Daemon的安全通常被稱為應用第一層安全性。如果沒有保護Docker Daemon的安全,那么一切都會很脆弱:
實施特權最小的用戶
默認情況下,Docker容器中的進程具有root特權,這些特權授予它們對容器和主機的管理訪問權限。這向容器和底層主機開放了黑客可能利用的安全漏洞。
為避免這些漏洞,請設置最低特權用戶,該用戶僅授予運行容器所需的特權。或者,限制運行時配置以禁止使用特權用戶。
使用機密管理工具
切勿將機密存儲在Dockerfile中,這可能會使訪問Dockerfile的用戶放錯位置,濫用或損害整個框架的安全性。
標準的最佳做法是安全加密第三方工具(例如Hashicorp Vault)中的密鑰機密。您可以將這種方法用于訪問憑證以外的其他容器機密。
限制直接訪問容器文件
臨時容器需要一致的升級和錯誤修復。結果,這種容器文件在用戶每次訪問它們時都會被公開。
作為最佳實踐,請在容器外部維護容器日志。這大大減少了容器文件的一致直接使用。它還使您的團隊無需訪問容器目錄中的日志即可解決問題。
啟用加密通訊
將Docker Daemon的訪問權限限制為僅少數關鍵用戶。此外,通過對一般用戶強制執行僅SSH訪問,來限制對容器文件的直接訪問。
使用TLS證書來加密主機級通信。禁用未使用的端口并使默認端口僅公開供內部使用也很重要。
總結
保護Docker可以保護您的IT環境,IT環境中的安全性是您永遠不應忽略的關鍵任務。
為了確保云原生框架的安全,第一步始終是考慮框架關鍵元素的漏洞。因此,組織應該維護一個強大的安全配置文件,該配置文件圍繞容器及其底層基礎結構進行。
盡管實施端到端安全性的方法可能有所不同,但目標始終是考慮脆弱點并采用減輕風險的最佳實踐。
回答所涉及的環境:聯想天逸510S、Windows 10。